/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Servlets;

import Beans.HorarioDoUsuario;
import Beans.Usuario;
import Daos.HorarioDoUsuarioDao;
import Daos.UsuarioDao;
import codigoGeral.Calendario;
import codigoGeral.PessoasParticipantesJogoX;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author wbartko
 */
public class ServletSelecionarMaisUsuarios extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    } 


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

       HttpSession sessao = request.getSession(true);


        //lista com pessoas e informacoes sobre o jogo que vieram da sessao
        List<PessoasParticipantesJogoX> pessoasDoJogo = new ArrayList<PessoasParticipantesJogoX>();
        pessoasDoJogo = (List<PessoasParticipantesJogoX>) sessao.getAttribute("pessoasDoJogo");

        //pega a data do jogo que esta inserida em qualquer indice da lista
        Calendario calendario = new Calendario(pessoasDoJogo.get(0).getDataJogo());

        //seleciona usuarios no banco conforme dia e horario escolhidos

        //transforma o dia que foi pego em uma string respectica com os 3 primeiros caracteres
        String diaSemanaDisponivel = calendario.retornaDiaSemanaCom3PrimeirosCaracteres();

        //pega o horario do jogo e substitue string inutil por nada
        String horario2 = pessoasDoJogo.get(0).getHorarioJogo().replace(":00", "").trim();

        //transforma em inteiro para verificacao
        int horarioEntradaInteiro = Integer.parseInt(horario2);

        //essa string é a mais importante
        String horarioParaConsultaBanco = horarioEntradaInteiro + diaSemanaDisponivel;
        System.out.println("horarioSemana: " +horarioParaConsultaBanco);

        //retorna lista com todos os horarioDoUsuario com a string
        List<HorarioDoUsuario> horarioDoUsuario = new HorarioDoUsuarioDao().getPorString("horarioLivre=" + horarioParaConsultaBanco);

        //lista que tera todo os usuarios livres naquele horario
        List<Usuario> usuarios = new ArrayList<Usuario>();

        //lista para pegar id dos usuarios livres naquele horario
        for (HorarioDoUsuario horarioDoUsuario1 : horarioDoUsuario) {

            Long idUsuario = horarioDoUsuario1.getUsuario().getId();
            System.out.println("idUsuario = " + idUsuario);

            //pega o nome dos sujeitos com base no id
            Usuario usuario2 = new UsuarioDao().get(idUsuario);
            if (usuario2 != null) {
                usuarios.add(usuario2);
            }
        }

        for (int i = 0; i < usuarios.size(); i++) {
            System.out.println("Usuarios viados: "+usuarios.get(i).getNome());

        }

         sessao.setAttribute("usuariosParaAdicionarAoJogo", usuarios);//manda lista de usuarios livres para requisiçao


    //     response.sendRedirect("adicionaUsuariosLivres.jsp");
         request.getRequestDispatcher("adicionaUsuariosLivres.jsp").forward(request, response);

    }

}
